package com.shop2cn.iapi.sqoptrade.parameter.req;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.shop2cn.iapi.sqoptrade.parameter.enums.AppTerminalSourceEnum;
import com.shop2cn.iapi.sqoptrade.parameter.enums.OrderSourceEnum;
import com.shop2cn.iapi.sqoptrade.parameter.enums.TerminalSourceEnum;
import com.shop2cn.iapi.sqoptrade.parameter.vo.BizVo;
import com.shop2cn.iapi.sqoptrade.parameter.vo.CouponVo;
import com.shop2cn.iapi.sqoptrade.parameter.vo.OrderGroupVo;
import com.shop2cn.iapi.sqoptrade.parameter.vo.PickInStoreVo;
import com.shop2cn.iapi.sqoptrade.parameter.vo.PrepaidCardVo;
import com.shop2cn.iapi.sqoptrade.parameter.vo.ThirdPartyPromotionVo;
import com.shop2cn.iapi.sqoptrade.parameter.vo.TravelerVo;
import com.shop2cn.iapi.sqoptrade.parameter.vo.UbuyUserVo;

@SuppressWarnings("serial")
public class PlaceOrderReq extends BaseRequest {

	private long mainOrderId;

	// 买家ID
	private long userId;

	//收件地址ID
	private long addressId;

	//收件人手机
	private String recvMobile;

	//收件人姓名
	private String recvName;

	//收件地址
	private String address;

	//邮编
	private String postCode;

	// 订单来源
	private OrderSourceEnum orderSource;
	
	// 订单来源（替代orderSource）
	private String placeOrderSource;

	// 终端来源
	private TerminalSourceEnum terminalSource;

	// 应用终端来源
	private AppTerminalSourceEnum appTerminalSource;

	// 买家IP
	private String sourceIp;

	// 设备ID
	private String deviceId;

	// 用户设备原始ID,例如IMEI等
	private String equipmentId;
	
	 //APP支付立减金额
    private BigDecimal payDeductAmount;

	// 订单组列表。一般按买手分组
	private List<OrderGroupVo> orderGroups;

	// 使用的平台优惠券
	private CouponVo ymatouCoupon;
	
	//推手ID
	private String hunterId;
	
	//1： 大礼包；2：普通商品
	private String hunterOrderType;

	/**
	 * 业务来源
	 */
	private BizVo bizSource;

	/**
	 *  预付卡信息
	 */
	private List<PrepaidCardVo> prepaidCardVos;
	
	/**
	 *  是否是代购神器订单
	 */
	private boolean fromShenqi;
	
	/**
	 *  店主的销售员
	 */
	private long salesman;
	
	/**
	 * 代下单时调价.大于0，加价；小于0；减价
	 */
	private BigDecimal discount;
	
	/**
	 * 代下单id
	 */
	private long proxyOrderId;
	
	/**
	 * 币种
	 */
	private String currency;
	
	/**
	 * 币种符号
	 */
	private String currencySymbol;
	
	/**
	 *
	 * 安利邀请人id
	 */
	private Long shareUserId;

	/**
	 * 订单使用返点金额
	 */
	private BigDecimal rebatePaidAmount;
	
	/**
	 * 是否支持线下支付
	 */
	private boolean supportOfflinePay;
	
	/**
	 * 第三方商城订单id
	 */
	private String thirdMallOrderId;
	
	 /**
     * 抖音外部推广pid
     */
    private String outerPromotionId;

    /**
     * 抖音外部推广平台openId
     */
    private String promotionPlatformOpenId;
    
    /**
     * 是否神器代理购买订单
     */
    private boolean shenqiProxyBuyOrder;
    
    /**
     * 神器购买订单客服id
     */
    private Long shenqiBuyOrderCsId;
    
    /**
     * 自定义订单结算币种类型，1：人民币，2：外币
     */
    private Integer customSettlementCurrencyType;
    
    /**
     * 神器支付通道：1：HipoPay，2：盛付通
     */
    private int payChannelType;
    
    private UbuyUserVo ubuyUserVo;
    
    private ThirdPartyPromotionVo thirdPartyPromotion;
    
    /**
     * 是否自提
     */
    private boolean pickupInStores;
    
    /**
     * 自提信息
     */
    private PickInStoreVo pickInStoreVo;
    
    private int entryIdType;
    
    private String entryIdNo;
    
    private Date entryTime;
    
    private String entryPort;
    
    private String transportation;
    
    private List<TravelerVo> travelerVos;
    
    /**
     * 下单使用的积分
     */
    private Long integral;
    
    /**
     * 1.自有积分 2.中免积分
     */
    private int integralServiceType;
    
    /**
     * 是否导购订单
     */
    private boolean guideOrder;
    
    private BigDecimal integralDeductAmount;
    
    
    /**
     * 以下参数只用来验证
     */
    
    private BigDecimal integralExchangeRate;
    
	public long getUserId() {
		return userId;
	}

	public void setUserId(long userId) {
		this.userId = userId;
	}

	public OrderSourceEnum getOrderSource() {
		return orderSource;
	}

	public void setOrderSource(OrderSourceEnum orderSource) {
		this.orderSource = orderSource;
	}

	public TerminalSourceEnum getTerminalSource() {
		return terminalSource;
	}

	public void setTerminalSource(TerminalSourceEnum terminalSource) {
		this.terminalSource = terminalSource;
	}

	public AppTerminalSourceEnum getAppTerminalSource() {
		return appTerminalSource;
	}

	public void setAppTerminalSource(AppTerminalSourceEnum appTerminalSource) {
		this.appTerminalSource = appTerminalSource;
	}

	public String getDeviceId() {
		return deviceId;
	}

	public void setDeviceId(String deviceId) {
		this.deviceId = deviceId;
	}

	public String getSourceIp() {
		return sourceIp;
	}

	public void setSourceIp(String sourceIp) {
		this.sourceIp = sourceIp;
	}

	public List<OrderGroupVo> getOrderGroups() {
		return orderGroups;
	}

	public void setOrderGroups(List<OrderGroupVo> orderGroups) {
		this.orderGroups = orderGroups;
	}

	public CouponVo getYmatouCoupon() {
		return ymatouCoupon;
	}

	public void setYmatouCoupon(CouponVo ymatouCoupon) {
		this.ymatouCoupon = ymatouCoupon;
	}

	public String getEquipmentId() {
		return equipmentId;
	}

	public void setEquipmentId(String equipmentId) {
		this.equipmentId = equipmentId;
	}

	public boolean requireAppId() {
		return true;
	}

	public BizVo getBizSource() {
		return bizSource;
	}

	public void setBizSource(BizVo bizSource) {
		this.bizSource = bizSource;
	}

	public long getMainOrderId() {
		return mainOrderId;
	}

	public void setMainOrderId(long mainOrderId) {
		this.mainOrderId = mainOrderId;
	}

	public Long getAddressId() {
		return addressId;
	}

	public void setAddressId(Long addressId) {
		this.addressId = addressId;
	}

	public String getRecvMobile() {
		return recvMobile;
	}

	public void setRecvMobile(String recvMobile) {
		this.recvMobile = recvMobile;
	}

	public String getRecvName() {
		return recvName;
	}

	public void setRecvName(String recvName) {
		this.recvName = recvName;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getPostCode() {
		return postCode;
	}

	public void setPostCode(String postCode) {
		this.postCode = postCode;
	}

	public String getRequestId() {
		return "" + mainOrderId;
	}

	public List<PrepaidCardVo> getPrepaidCardVos() {
		return prepaidCardVos;
	}

	public void setPrepaidCardVos(List<PrepaidCardVo> prepaidCardVos) {
		this.prepaidCardVos = prepaidCardVos;
	}
	
	public BigDecimal getPayDeductAmount() {
		return payDeductAmount;
	}

	public void setPayDeductAmount(BigDecimal payDeductAmount) {
		this.payDeductAmount = payDeductAmount;
	}

	public String getHunterId() {
		return hunterId;
	}

	public void setHunterId(String hunterId) {
		this.hunterId = hunterId;
	}

	public String getHunterOrderType() {
		return hunterOrderType;
	}

	public void setHunterOrderType(String hunterOrderType) {
		this.hunterOrderType = hunterOrderType;
	}

	public boolean isFromShenqi() {
		return fromShenqi;
	}

	public void setFromShenqi(boolean fromShenqi) {
		this.fromShenqi = fromShenqi;
	}

	public long getSalesman() {
		return salesman;
	}

	public void setSalesman(long salesman) {
		this.salesman = salesman;
	}

	public BigDecimal getDiscount() {
		return discount;
	}

	public void setDiscount(BigDecimal discount) {
		this.discount = discount;
	}

	public long getProxyOrderId() {
		return proxyOrderId;
	}

	public void setProxyOrderId(long proxyOrderId) {
		this.proxyOrderId = proxyOrderId;
	}

	public String getCurrency() {
		return currency;
	}

	public void setCurrency(String currency) {
		this.currency = currency;
	}

	public String getCurrencySymbol() {
		return currencySymbol;
	}

	public void setCurrencySymbol(String currencySymbol) {
		this.currencySymbol = currencySymbol;
	}

	public Long getShareUserId() {
		return shareUserId;
	}

	public void setShareUserId(Long shareUserId) {
		this.shareUserId = shareUserId;
	}

	public BigDecimal getRebatePaidAmount() {
		return rebatePaidAmount;
	}

	public void setRebatePaidAmount(BigDecimal rebatePaidAmount) {
		this.rebatePaidAmount = rebatePaidAmount;
	}

	public Boolean getSupportOfflinePay() {
		return supportOfflinePay;
	}

	public void setSupportOfflinePay(Boolean supportOfflinePay) {
		this.supportOfflinePay = supportOfflinePay;
	}

	public String getThirdMallOrderId() {
		return thirdMallOrderId;
	}

	public void setThirdMallOrderId(String thirdMallOrderId) {
		this.thirdMallOrderId = thirdMallOrderId;
	}

	public String getPlaceOrderSource() {
		return placeOrderSource;
	}

	public void setPlaceOrderSource(String placeOrderSource) {
		this.placeOrderSource = placeOrderSource;
	}

	public String getOuterPromotionId() {
		return outerPromotionId;
	}

	public void setOuterPromotionId(String outerPromotionId) {
		this.outerPromotionId = outerPromotionId;
	}

	public String getPromotionPlatformOpenId() {
		return promotionPlatformOpenId;
	}

	public void setPromotionPlatformOpenId(String promotionPlatformOpenId) {
		this.promotionPlatformOpenId = promotionPlatformOpenId;
	}

	public Boolean getShenqiProxyBuyOrder() {
		return shenqiProxyBuyOrder;
	}

	public void setShenqiProxyBuyOrder(Boolean shenqiProxyBuyOrder) {
		this.shenqiProxyBuyOrder = shenqiProxyBuyOrder;
	}

	public Long getShenqiBuyOrderCsId() {
		return shenqiBuyOrderCsId;
	}

	public void setShenqiBuyOrderCsId(Long shenqiBuyOrderCsId) {
		this.shenqiBuyOrderCsId = shenqiBuyOrderCsId;
	}

	public Integer getCustomSettlementCurrencyType() {
		return customSettlementCurrencyType;
	}

	public void setCustomSettlementCurrencyType(Integer customSettlementCurrencyType) {
		this.customSettlementCurrencyType = customSettlementCurrencyType;
	}

	public Integer getPayChannelType() {
		return payChannelType;
	}

	public void setPayChannelType(Integer payChannelType) {
		this.payChannelType = payChannelType;
	}

	public UbuyUserVo getUbuyUserVo() {
		return ubuyUserVo;
	}

	public void setUbuyUserVo(UbuyUserVo ubuyUserVo) {
		this.ubuyUserVo = ubuyUserVo;
	}

	public ThirdPartyPromotionVo getThirdPartyPromotion() {
		return thirdPartyPromotion;
	}

	public void setThirdPartyPromotion(ThirdPartyPromotionVo thirdPartyPromotion) {
		this.thirdPartyPromotion = thirdPartyPromotion;
	}

	public Boolean getPickupInStores() {
		return pickupInStores;
	}

	public void setPickupInStores(Boolean pickupInStores) {
		this.pickupInStores = pickupInStores;
	}

	public Integer getEntryIdType() {
		return entryIdType;
	}

	public void setEntryIdType(Integer entryIdType) {
		this.entryIdType = entryIdType;
	}

	public String getEntryIdNo() {
		return entryIdNo;
	}

	public void setEntryIdNo(String entryIdNo) {
		this.entryIdNo = entryIdNo;
	}

	public Date getEntryTime() {
		return entryTime;
	}

	public void setEntryTime(Date entryTime) {
		this.entryTime = entryTime;
	}

	public String getEntryPort() {
		return entryPort;
	}

	public void setEntryPort(String entryPort) {
		this.entryPort = entryPort;
	}

	public String getTransportation() {
		return transportation;
	}

	public void setTransportation(String transportation) {
		this.transportation = transportation;
	}

	public List<TravelerVo> getTravelerVos() {
		return travelerVos;
	}

	public void setTravelerVos(List<TravelerVo> travelerVos) {
		this.travelerVos = travelerVos;
	}

	public Long getIntegral() {
		return integral;
	}

	public void setIntegral(Long integral) {
		this.integral = integral;
	}

	public Integer getIntegralServiceType() {
		return integralServiceType;
	}

	public void setIntegralServiceType(Integer integralServiceType) {
		this.integralServiceType = integralServiceType;
	}

	public Boolean getGuideOrder() {
		return guideOrder;
	}

	public void setGuideOrder(Boolean guideOrder) {
		this.guideOrder = guideOrder;
	}

	public PickInStoreVo getPickInStoreVo() {
		return pickInStoreVo;
	}

	public void setPickInStoreVo(PickInStoreVo pickInStoreVo) {
		this.pickInStoreVo = pickInStoreVo;
	}

	public BigDecimal getIntegralDeductAmount() {
		return integralDeductAmount;
	}

	public void setIntegralDeductAmount(BigDecimal integralDeductAmount) {
		this.integralDeductAmount = integralDeductAmount;
	}

	public void setAddressId(long addressId) {
		this.addressId = addressId;
	}

	public void setSupportOfflinePay(boolean supportOfflinePay) {
		this.supportOfflinePay = supportOfflinePay;
	}

	public void setShenqiProxyBuyOrder(boolean shenqiProxyBuyOrder) {
		this.shenqiProxyBuyOrder = shenqiProxyBuyOrder;
	}

	public void setPayChannelType(int payChannelType) {
		this.payChannelType = payChannelType;
	}

	public void setPickupInStores(boolean pickupInStores) {
		this.pickupInStores = pickupInStores;
	}

	public void setEntryIdType(int entryIdType) {
		this.entryIdType = entryIdType;
	}

	public void setIntegralServiceType(int integralServiceType) {
		this.integralServiceType = integralServiceType;
	}

	public void setGuideOrder(boolean guideOrder) {
		this.guideOrder = guideOrder;
	}

	public BigDecimal getIntegralExchangeRate() {
		return integralExchangeRate;
	}

	public void setIntegralExchangeRate(BigDecimal integralExchangeRate) {
		this.integralExchangeRate = integralExchangeRate;
	}
}
